home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / p_man / cat5 / migration.z / migration
Encoding:
Text File  |  2001-04-17  |  43.2 KB  |  727 lines

  1.  
  2.  
  3.  
  4. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      migration - dynamic memory migration
  10.  
  11. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  12.      This document describes the dynamic memory migration system available in
  13.      Origin systems.
  14.  
  15.  
  16.    IIIInnnnttttrrrroooodddduuuuccccttttiiiioooonnnn
  17.      Dynamic page migration is a mechanism that provides adaptive memory
  18.      locality for applications running on a NUMA machine such as the Origin
  19.      systems. The Origin hardware implements a competitive algorithm based on
  20.      comparing remote memory access counters to a local memory access counter;
  21.      when the difference between the numbers of remote and local accesses goes
  22.      beyond a preset threshold, an interrupt is generated to inform the
  23.      operating system that a physical memory page is currently experiencing
  24.      excessive remote accesses.
  25.  
  26.  
  27.      Within the interrupt handler the operating system makes a final decision
  28.      whether to migrate the page or not. If it decides to migrate the page,
  29.      the migration is executed immediately. The system may decide not to
  30.      execute the migration due to enforcement of a migration control policy or
  31.      due to lack of resources.
  32.  
  33.  
  34.      Page migration can also be explicitly requested by users, and in
  35.      addition, it is used to assist the memory coalescing algorithms for
  36.      multiple page size support.
  37.  
  38.  
  39.    MMMMiiiiggggrrrraaaattttiiiioooonnnn MMMMoooodddduuuulllleeeessss
  40.      The migration subsystem is composed of the following modules:
  41.  
  42.      - DDDDeeeetttteeeeccccttttiiiioooonnnn MMMMoooodddduuuulllleeee.... This module monitors memory accesses issued by nodes
  43.        in the system to each physical memory page. In Origin systems this
  44.        module is mostly implemented in hardware. This detection module informs
  45.        the _M_i_g_r_a_t_i_o_n _C_o_n_t_r_o_l _M_o_d_u_l_e that a page is experiencing excessive
  46.        remote accesses via an interrupt sent to the page's home node.
  47.  
  48.      - MMMMiiiiggggrrrraaaattttiiiioooonnnn EEEEnnnnggggiiiinnnneeee MMMMoooodddduuuulllleeee.... This module carries out data movement from a
  49.        current physical memory page to a new page in the node issuing the
  50.        remote accesses.
  51.  
  52.      - MMMMiiiiggggrrrraaaattttiiiioooonnnn CCCCoooonnnnttttrrrroooollll MMMMoooodddduuuulllleeee.... This module decides whether the page should
  53.        be migrated or not, based on migration control policies, defined by
  54.        parameters such as _m_i_g_r_a_t_i_o_n _t_h_r_e_s_h_o_l_d, _b_o_u_n_c_e _d_e_t_e_c_t_i_o_n _a_n_d
  55.        _p_r_e_v_e_n_t_i_o_n, _d_a_m_p_e_n_i_n_g _f_a_c_t_o_r, and others.
  56.  
  57.      - MMMMiiiiggggrrrraaaattttiiiioooonnnn CCCCoooonnnnttttrrrroooollll PPPPeeeerrrriiiiooooddddiiiicccc OOOOppppeeeerrrraaaattttiiiioooonnnnssss MMMMoooodddduuuulllleeee.... This module executes all
  58.        periodic operations needed for the _M_i_g_r_a_t_i_o_n _C_o_n_t_r_o_l _M_o_d_u_l_e.
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  71.  
  72.  
  73.  
  74.      - MMMMeeeemmmmoooorrrryyyy MMMMaaaannnnaaaaggggeeeemmmmeeeennnntttt CCCCoooonnnnttttrrrroooollll IIIInnnntttteeeerrrrffffaaaacccceeee MMMMoooodddduuuulllleeee ((((MMMMMMMMCCCCIIII MMMMoooodddduuuulllleeee)))).... This module
  75.        provides an interface for users to tune the migration policy associated
  76.        with an address space.
  77.  
  78.  
  79.    MMMMiiiiggggrrrraaaattttiiiioooonnnn DDDDeeeetttteeeeccccttttiiiioooonnnn MMMMoooodddduuuulllleeee
  80.      The basic goal of memory migration is to minimize memory access latency.
  81.      In a NUMA system where local memory access latency is smaller then remote
  82.      memory access latency, we can achieve this latency minimization goal by
  83.      moving the data to the node where most memory references are going to be
  84.      issued from.
  85.  
  86.      It would be great to be able to move data to the node where it is going
  87.      to be needed right before it is referenced. Unfortunately, we cannot
  88.      predict the future. However, common programs usually have some amount of
  89.      temporal and spatial locality, which allows us to heuristically predict
  90.      future behavior based on recent past behavior.
  91.  
  92.      The usual procedure used to predict future memory accesses to a page is
  93.      to count the memory references to this page issued by each node in the
  94.      system.  If the accumulated number of remote references becomes
  95.      considerably greater than the number of accumulated local references,
  96.      then it may be beneficial to migrate the page to the remote node issuing
  97.      the references, especially if this remote node will continue accessing
  98.      this same page for a long time.
  99.  
  100.      Origin systems have counters that continuously monitor all memory
  101.      accesses issued by each node in the system to each physical memory page.
  102.      In a 64-node Origin (128 processors), we have 64 memory access counters
  103.      for every 4-KB low level physical page (4 KB is the size of a low level
  104.      physical page size; software page sizes start at 16KB for Origin
  105.      systems). For every memory access, the counter associated with the node
  106.      issuing the reference is incremented; at the same time, this counter is
  107.      compared to the counter that keeps track of local accesses, and if the
  108.      remote counter exceeds the local counter by a threshold, an interrupt is
  109.      generated advising the Operating System about the existence of a page
  110.      with excessive remote accesses.
  111.  
  112.      Upon reception of the interrupt, the _M_i_g_r_a_t_i_o_n _C_o_n_t_r_o_l _M_o_d_u_l_e in the
  113.      Operating System decides whether to migrate the page or not.
  114.  
  115.      The threshold that determines how large the difference between remote and
  116.      local counters needs to be in order for the interrupt to be generated is
  117.      stored in a per-node hardware register, which is initialized by the
  118.      Migration Control Module. The _d_e_f_a_u_l_t _s_y_s_t_e_m _t_h_r_e_s_h_o_l_d defined in
  119.      /var/sysgen/mtune/numa by the tunable variables
  120.      nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ddddeeeeffffaaaauuuulllltttt____tttthhhhrrrreeeesssshhhhoooolllldddd and nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____tttthhhhrrrreeeesssshhhhoooolllldddd____rrrreeeeffffeeeerrrreeeennnncccceeee (see
  121.      Migration Tunables below), and the threshold specified by users as a
  122.      parameter of a migration policy (mmci(5)), are not directly stored into
  123.      this register due to the fact that different pages on the same node may
  124.      have different migration thresholds. These thresholds are used to
  125.      initialize the reference counters when a page is initialized.
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  137.  
  138.  
  139.  
  140.    MMMMiiiiggggrrrraaaattttiiiioooonnnn EEEEnnnnggggiiiinnnneeee MMMMoooodddduuuulllleeee
  141.      This module transparently moves a page from one physical frame to
  142.      another. The migration engine first verifies the availability of all
  143.      resources needed to realize the migration of a page. If all resources are
  144.      not available, the operation is cancelled.
  145.  
  146.      The data transfer operation may be done using a processor or a
  147.      specialized Block Transfer Engine. Translation lookaside buffer (TLB)
  148.      shootdowns may be done using inter-processor interrupts or special
  149.      hardware known as _p_o_i_s_o_n _b_i_t_s, available only as an option on special
  150.      Origin systems running IRIX 6.5 or later. TLB shootdowns are needed in
  151.      order to avoid the use of stale translations that may be pointing to the
  152.      physical memory page that contained the data before migration took place.
  153.      Normally, a TLB shootdown operation is performed by sending interrupts to
  154.      all processors in the system with a TLB that may have stale translation
  155.      entries. On systems with _p_o_i_s_o_n _b_i_t_s, this global TLB shootdown is not
  156.      needed: along with the data transfer operation, hardware bits are
  157.      automatically set to indicate that the page is now stale (poisonous); if
  158.      a processor tries to access this stale page via a stale translation, the
  159.      memory management hardware generates a special Bus Error which causes the
  160.      TLB with the stale translation to be updated. Effectively, poison bits
  161.      allow for the implementation of a lazy TLB shootdown algorithm.
  162.  
  163.      The vehicle used for the data transfer operation may be selected by the
  164.      system administrator via a tunable variable in /var/sysgen/mtune/numa:
  165.      nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____vvvveeeehhhhiiiicccclllleeee. Poison bit based TLB shootdowns are enabled whenever
  166.      the data transfer vehicle is the Block Transfer Engine and the hardware
  167.      is equipped with the optional _p_o_i_s_o_n _b_i_t_s.
  168.  
  169.  
  170.    MMMMiiiiggggrrrraaaattttiiiioooonnnn CCCCoooonnnnttttrrrroooollll MMMMoooodddduuuulllleeee
  171.      This module decides whether a page should be migrated or not after
  172.      receiving a notification (via an interrupt) from the _M_i_g_r_a_t_i_o_n _D_e_t_e_c_t_i_o_n
  173.      _M_o_d_u_l_e alerting that a page is experiencing excessive remote accesses.
  174.      This decision is based on applicable migration control policies and
  175.      resource availability.
  176.  
  177.      The basic idea behind controlling migration is that it is not always a
  178.      good idea to migrate a page when the memory reference counters are
  179.      telling us that a page is experiencing excessive remote accesses; the
  180.      page may be bouncing back and forth due to poor application behavior, the
  181.      counters may have accumulated too much past knowledge, making them unfit
  182.      to predict near future behavior, the destination node may have little
  183.      free memory, or the path needed to do the migration may be too busy.
  184.  
  185.      The Migration Control Module applies a series of filters to a reference
  186.      counter notification or _m_i_g_r_a_t_i_o_n _r_e_q_u_e_s_t, as enumerated below. All
  187.      tunables mentioned in this list are found in /var/sysgen/mtune/numa.
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  203.  
  204.  
  205.  
  206.      Node Distance Filter        This filter rejects all migration requests
  207.                                  where the distance between the source and the
  208.                                  destination is less than
  209.                                  nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmiiiinnnn____ddddiiiissssttttaaaannnncccceeee in
  210.                                  /var/sysgen/mtune/numa. All rejected requests
  211.                                  result in the page being frozen in order to
  212.                                  prevent this request from being re-issued too
  213.                                  soon.
  214.  
  215.      Memory Pressure Filter      This filter rejects migration requests to
  216.                                  nodes where physical memory is low.  The
  217.                                  threshold for low memory is defined by the
  218.                                  tunable nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmeeeemmmmoooorrrryyyy____lllloooowwww____tttthhhhrrrreeeesssshhhhoooolllldddd, which
  219.                                  defines the minimum percentage of physical
  220.                                  memory that needs to be available in order
  221.                                  for a page to be migrated there. This filter
  222.                                  can be enabled and disabled using the tunable
  223.                                  nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmeeeemmmmoooorrrryyyy____lllloooowwww____eeeennnnaaaabbbblllleeeedddd.
  224.  
  225.      Traffic Control Filter      Experimental filter intended to throttle
  226.                                  migration down when the Craylink Interconnect
  227.                                  traffic reaches peak levels. Experiments have
  228.                                  shown that this filter is unnecessary for
  229.                                  Origin 2000 systems.
  230.  
  231.      Bounce Control Filter       Sometimes pages may start bouncing due to
  232.                                  poor application behavior or simple page
  233.                                  level false sharing. This filter detects and
  234.                                  freezes bouncing pages. The detection is done
  235.                                  by keeping a count of the number of
  236.                                  migrations per page in a counter that is aged
  237.                                  (periodically decremented by a system
  238.                                  daemon). If the count ever goes above a
  239.                                  threshold, it is considered to be bouncing
  240.                                  and is then frozen. Frozen pages start
  241.                                  melting immediately, so after a period of
  242.                                  time, they are unfrozen and migratable again.
  243.                                  Note the the melting procedure is gradual,
  244.                                  not instantaneous. The bounce control filter
  245.                                  relies on operations executed periodically by
  246.                                  the _M_i_g_r_a_t_i_o_n _C_o_n_t_r_o_l _P_e_r_i_o_d_i_c _O_p_e_r_a_t_i_o_n_s
  247.                                  _M_o_d_u_l_e described below, for a) aging of the
  248.                                  migration counters and b) melting of frozen
  249.                                  pages. The period of these bounce control
  250.                                  periodic operations is defined by the tunable
  251.                                  nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____bbbboooouuuunnnncccceeee____ccccoooonnnnttttrrrroooollll____iiiinnnntttteeeerrrrvvvvaaaallll. The
  252.                                  default value for this tunable is 0, which
  253.                                  translates into a period such that 4 physical
  254.                                  pages are operated on per tick (10[ms]
  255.                                  interval). Freezing can be enabled and
  256.                                  disabled using the tunable
  257.                                  nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ffffrrrreeeeeeeezzzzeeee____eeeennnnaaaabbbblllleeeedddd, and the freezing
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  269.  
  270.  
  271.  
  272.                                  threshold can be set using the tunable
  273.                                  nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ffffrrrreeeeeeeezzzzeeee____tttthhhhrrrreeeesssshhhhoooolllldddd. This threshold is
  274.                                  specified as a percentage of the maximum
  275.                                  effective freezing threshold value, which is
  276.                                  7 for Origin 2000 systems. Melting can be
  277.                                  enabled and disabled using the tunable
  278.                                  nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmeeeelllltttt____eeeennnnaaaabbbblllleeeedddd, and the melting
  279.                                  threshold can be set using the tunable
  280.                                  nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmeeeelllltttt____tttthhhhrrrreeeesssshhhhoooolllldddd. The melting
  281.                                  threshold is expressed as a percentage of the
  282.                                  maximum effective melting threshold value,
  283.                                  which is 7 for Origin 2000 systems.
  284.  
  285.      Migration Dampening Filter  This filter minimizes the amount of migration
  286.                                  due to quick temporary remote memory
  287.                                  accesses, such as those that occur when
  288.                                  caches are loaded from a cold state, or when
  289.                                  they are reloaded with a new context. We
  290.                                  implement this dampening flter using a per-
  291.                                  page migration request counter that is
  292.                                  incremented every time we receive a migration
  293.                                  request interrupt, and aged (periodically
  294.                                  decremented) by the _M_i_g_r_a_t_i_o_n _C_o_n_t_r_o_l
  295.                                  _P_e_r_i_o_d_i_c _O_p_e_r_a_t_i_o_n_s _M_o_d_u_l_e. We migrate a page
  296.                                  only if the counter reaches a value greater
  297.                                  than some dampening threshold. This will
  298.                                  happen only for applications that
  299.                                  continuously generate remote accesses to the
  300.                                  same page during some interval of time. If
  301.                                  the application experiences just a short
  302.                                  transitory sequence of remote accesses, it is
  303.                                  very unlikely that the migration request
  304.                                  counter will reach the threshold value. This
  305.                                  filter can be enabled and disabled using the
  306.                                  tunable nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ddddaaaammmmppppeeeennnniiiinnnngggg____eeeennnnaaaabbbblllleeeedddd, and the
  307.                                  migration request count threshold can be set
  308.                                  using the tunable nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ddddaaaammmmppppeeeennnniiiinnnngggg____ffffaaaaccccttttoooorrrr.
  309.  
  310.  
  311.      The memory reference counters are re-initialized to their startup values
  312.      after every reference counter interrupt.
  313.  
  314.  
  315.    MMMMiiiiggggrrrraaaattttiiiioooonnnn CCCCoooonnnnttttrrrroooollll PPPPeeeerrrriiiiooooddddiiiicccc OOOOppppeeeerrrraaaattttiiiioooonnnnssss MMMMoooodddduuuulllleeee
  316.      The _M_i_g_r_a_t_i_o_n _C_o_n_t_r_o_l _M_o_d_u_l_e relies on several periodic operations. These
  317.      operations are listed below:
  318.  
  319.      - Bounce Control Operations. Age migration counter for freezing and
  320.        melting.
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  335.  
  336.  
  337.  
  338.      _ Unpegging. Reset memory reference counters that have reached a
  339.        saturation level.
  340.  
  341.      - Queue Control Operations. Age queued outstanding migration requests.
  342.        Experimental, always disabled for production systems.
  343.  
  344.      - Traffic Control Operations. Sample the state of the Craylink
  345.        interconnect and correspondingly adjust the per-node migration
  346.        threshold. Experimental, always disabled for production systems.
  347.  
  348.      These operations are executed in a loop, triggered once every
  349.      mmmmeeeemmmm____ttttiiiicccckkkk____bbbbaaaasssseeee____ppppeeeerrrriiiioooodddd, a tunable that defines the migration control
  350.      periodic period in terms of system ticks (a system tick is equivalent to
  351.      10 [ms] on Origin systems running IRIX 6.5). This loop of operations may
  352.      be enabled and disabled using the tunable mmmmeeeemmmm____ttttiiiicccckkkk____eeeennnnaaaabbbblllleeeedddd. If migration
  353.      is enabled or users are allowed to use migration, this loop must be
  354.      enabled.
  355.  
  356.      In order to minimize interference with user processes, we limit the
  357.      number of pages operated on in a loop to a few pages, trying to limit the
  358.      time used to less than 20 [us]. Administrators can adjust the time
  359.      dedicated to these periodic operations via the following tunables:
  360.  
  361.      + mmmmeeeemmmm____ttttiiiicccckkkk____bbbbaaaasssseeee____ppppeeeerrrriiiioooodddd
  362.  
  363.      + nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____uuuunnnnppppeeeeggggggggiiiinnnngggg____ccccoooonnnnttttrrrroooollll____iiiinnnntttteeeerrrrvvvvaaaallll
  364.  
  365.      + nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ttttrrrraaaaffffffffiiiicccc____ccccoooonnnnttttrrrroooollll____iiiinnnntttteeeerrrrvvvvaaaallll
  366.  
  367.      + nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____bbbboooouuuunnnncccceeee____ccccoooonnnnttttrrrroooollll____iiiinnnntttteeeerrrrvvvvaaaallll
  368.  
  369.    DDDDeeeessssccccrrrriiiippppttttiiiioooonnnn ooooffff PPPPeeeerrrriiiiooooddddiiiicccc OOOOppppeeeerrrraaaattttiiiioooonnnnssss
  370.      The following list describes the _B_o_u_n_c_e _C_o_n_t_r_o_l _P_e_r_i_o_d_i_c _O_p_e_r_a_t_i_o_n_s in
  371.      detail:
  372.  
  373.      Aging Migration Counters    In order to detect bouncing we keep track of
  374.                                  the number of migrations per page using a
  375.                                  counter that is periodically decremented
  376.                                  (aged). When the counter goes beyond a
  377.                                  threshold, we consider the page to be
  378.                                  bouncing and freeze it.
  379.  
  380.      Aging Migration Request Counters
  381.                                  In order to avoid excessive migration or
  382.                                  bouncing due to short, transitory remote
  383.                                  memry access sequences we have a migration
  384.                                  dampening filter that needs to count several
  385.                                  migration requests within a limited period of
  386.                                  time before it actually lets a real page
  387.                                  migration take place. The time factor is
  388.                                  introduced in the filter by aging the
  389.                                  migration request counters.
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  401.  
  402.  
  403.  
  404.      Melting Frozen Pages        When a page is frozen we want to eventually
  405.                                  unfreeze it so that it becomes migratable
  406.                                  again. This behavior is desirable because the
  407.                                  events that cause a page to be frozen are
  408.                                  usually temporary. As part of the periodic
  409.                                  operations, we increment a counter per page
  410.                                  to keep track of how long the page has been
  411.                                  frozen. When the counter goes above a
  412.                                  threshold, meaning that the page has been
  413.                                  frozen for a sufficient time, we unfreeze the
  414.                                  page, thereby making it migratable again.
  415.  
  416.      The _U_n_p_e_g_g_i_n_g _P_e_r_i_o_d_i_c _O_p_e_r_a_t_i_o_n consists of scanning all the memory
  417.      reference counters looking for those counters that have pegged due to
  418.      reaching their maximum count. When a pegged counter is found, all
  419.      counters associated with that page are restarted.
  420.  
  421.      The current implementation of the _M_i_g_r_a_t_i_o_n _C_o_n_t_r_o_l mmmmoooodddduuuulllleeee ddddooooeeeessss nnnnooootttt
  422.      eeeexxxxeeeeccccuuuutttteeee _Q_u_e_u_e _C_o_n_t_r_o_l _P_e_r_i_o_d_i_c _O_p_e_r_a_t_i_o_n_s oooorrrr _T_r_a_f_f_i_c _C_o_n_t_r_o_l _P_e_r_i_o_d_i_c
  423.      _O_p_e_r_a_t_i_o_n_s....
  424.  
  425.    PPPPaaaaggggeeee MMMMiiiiggggrrrraaaattttiiiioooonnnn TTTTuuuunnnnaaaabbbblllleeeessss
  426.      This is a list of all the memory migration tunables in
  427.      /var/sysgen/mtune/numa that define the default memory migration policy
  428.      used by the system.
  429.  
  430.      * nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ddddeeeeffffaaaauuuulllltttt____mmmmooooddddeeee.  This tunable defines the default migration
  431.        mode. It can take the following values:
  432.  
  433.  
  434.               0: MIGR_DEFMODE_DISABLED
  435.                  Migration is completely disabled, users cannot use migration.
  436.  
  437.               1: MIGR_DEFMODE_ENABLED
  438.                  Migration is always enabled, users cannot disable migration.
  439.  
  440.               2: MIGR_DEFMODE_NORMOFF
  441.                  Migration is normally off, users can enable migration for
  442.                  an application.
  443.  
  444.               3: MIGR_DEFMODE_NORMON
  445.                  Migration is normally on, users can disable migration for
  446.                  an application.
  447.  
  448.               4: MIGR_DEFMODE_LIMITED
  449.                  Migration is normally off for machine configurations with
  450.                  a maximum Craylink distance less than numa_migr_min_maxradius
  451.                  (defined below). Migration is normally on otherwise. Users
  452.                  can override this mode.
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  467.  
  468.  
  469.  
  470.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ddddeeeeffffaaaauuuulllltttt____tttthhhhrrrreeeesssshhhhoooolllldddd.  This threshold defines the minimum
  471.           difference between the local and any remote counter needed to
  472.           generate a migration request interrupt.
  473.  
  474.  
  475.               if ((remote_counter - local_counter) >=
  476.                   ((numa_migr_threshold_reference_value / 100) *
  477.                    numa_migr_default_threshold)) {
  478.                   send_migration_request_intr();
  479.               }
  480.  
  481.  
  482.  
  483.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____tttthhhhrrrreeeesssshhhhoooolllldddd____rrrreeeeffffeeeerrrreeeennnncccceeee.  This parameter defines the pegging
  484.           value for the memory reference counters.  It is machine
  485.           configuration dependent. For Origin 2000 systems, it can take the
  486.           following values:
  487.  
  488.  
  489.              0: MIGR_THRESHREF_STANDARD = Threshold reference is 2048 (11 bit
  490.                                           counters) Maximum threshold allowed
  491.                                           for systems with STANDARD DIMMS. This
  492.                                           is the default.
  493.              1: MIGR_THRESHREF_PREMIUM =  Threshold reference is 524288 (19-bit
  494.                                           counters) Maximum threshold allowed
  495.                                           for systems with *all* PREMIUM SIMMS.
  496.  
  497.  
  498.  
  499.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____vvvveeeehhhhiiiicccclllleeee.  This tunable defines what device the system
  500.           should use to migrate a page.  The value 0 selects the Block
  501.           Transfer Engine (BTE) and a value of 1 selects the processor. When
  502.           the BTE is selected, and the system is equipped with the optional
  503.           _p_o_i_s_o_n _b_i_t_s, the system automatically uses _L_a_z_y _T_L_B _S_h_o_o_t_d_o_w_n
  504.           _A_l_g_o_r_i_t_h_m_s.
  505.  
  506.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmiiiinnnn____mmmmaaaaxxxxrrrraaaaddddiiiiuuuussss.  This tunable is used if
  507.           nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ddddeeeeffffaaaauuuulllltttt____mmmmooooddddeeee has been set to mode 4
  508.           (MIGR_DEFMODE_LIMITED). For this mode, migration is normally off for
  509.           machine configurations with a maximum Craylink distance less than
  510.           nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmiiiinnnn____mmmmaaaaxxxxrrrraaaaddddiiiiuuuussss Migration is normally on otherwise.
  511.  
  512.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____aaaauuuuttttoooo____mmmmiiiiggggrrrr____mmmmeeeecccchhhh.  This tunable defines the migration
  513.           execution mode for memory reference counter triggered migrations: 0
  514.           for immediate and 1 for delayed. Only the _I_m_m_e_d_i_a_t_e _M_o_d_e (0) is
  515.           currently available.
  516.  
  517.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____uuuusssseeeerrrr____mmmmiiiiggggrrrr____mmmmeeeecccchhhh.  This tunables defines the migration
  518.           execution mode for user requested migrations: 0 for immediate and 1
  519.           for delayed. Only the _I_m_m_e_d_i_a_t_e _M_o_d_e (0) is currently available.
  520.  
  521.  
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  533.  
  534.  
  535.  
  536.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ccccooooaaaallllddddmmmmiiiiggggrrrr____mmmmeeeecccchhhh .  This tunables defines the migration
  537.           execution mode for memory coalescing migrations: 0 for immediate and
  538.           1 for delayed. Only the _I_m_m_e_d_i_a_t_e _M_o_d_e (0) is currently available.
  539.  
  540.      *    nnnnuuuummmmaaaa____rrrreeeeffffccccnnnntttt____ddddeeeeffffaaaauuuulllltttt____mmmmooooddddeeee.  Extended counters are used in application
  541.           profiling (see rrrreeeeffffccccnnnntttt((((5555))))) and to control automatic memory migration.
  542.           This tunable defines the default extended reference counter mode. It
  543.           can take the following values:
  544.  
  545.  
  546.              0: REFCNT_DEFMODE_DISABLED
  547.                 Extended reference counters are disabled, users cannot access
  548.                 the extended reference counters (refcnt(5)). In this case
  549.                 automatic memory migration will not be performed regardless of
  550.                 any other settings.
  551.  
  552.              1: REFCNT_DEFMODE_ENABLED
  553.                 Extended reference counters are always enabled, users cannot
  554.                 disable them.
  555.  
  556.              2: REFCNT_DEFMODE_NORMOFF
  557.                 Extended reference counters are normally disabled, users can
  558.                 disable or enable the counters for an application.
  559.  
  560.              3: REFCNT_DEFMODE_NORMON
  561.                 Extended reference counters are normally enabled, users can
  562.                 disable or enable the counters for an application.
  563.  
  564.  
  565.      *    nnnnuuuummmmaaaa____rrrreeeeffffccccnnnntttt____oooovvvveeeerrrrfffflllloooowwww____tttthhhhrrrreeeesssshhhhoooolllldddd This tunable defines the count at
  566.           which the hardware reference counters notify the operating system of
  567.           a counter overflow in order for the count to be transferred into the
  568.           (software) extended reference counters. It is expresses as a
  569.           percentage of the threshold reference value defined by
  570.           nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____tttthhhhrrrreeeesssshhhhoooolllldddd____rrrreeeeffffeeeerrrreeeennnncccceeee.
  571.  
  572.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmiiiinnnn____ddddiiiissssttttaaaannnncccceeee Minimum distance required by the _N_o_d_e
  573.           _D_i_s_t_a_n_c_e _F_i_l_t_e_r in order to accept a migration request.
  574.  
  575.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmeeeemmmmoooorrrryyyy____lllloooowwww____eeeennnnaaaabbbblllleeeedddd Enable or disable the _M_e_m_o_r_y _P_r_e_s_s_u_r_e
  576.           _F_i_l_t_e_r.
  577.  
  578.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmeeeemmmmoooorrrryyyy____lllloooowwww____tttthhhhrrrreeeesssshhhhoooolllldddd Threshold at which the _M_e_m_o_r_y
  579.           _P_r_e_s_s_u_r_e _F_i_l_t_e_r starts rejecting migration requests to a node. This
  580.           threshold is expressed as a percentage of the total amount of
  581.           physical memory in  a node.
  582.  
  583.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ffffrrrreeeeeeeezzzzeeee____eeeennnnaaaabbbblllleeeedddd Enable or disable the freezing operation in
  584.           the _B_o_u_n_c_e _C_o_n_t_r_o_l _F_i_l_t_e_r.
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  599.  
  600.  
  601.  
  602.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ffffrrrreeeeeeeezzzzeeee____tttthhhhrrrreeeesssshhhhoooolllldddd Threshold at which a page is frozen. This
  603.           tunable is expressed as a percent of the maximum count supported by
  604.           the migration counters (7 for Origin 2000).
  605.  
  606.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmeeeelllltttt____eeeennnnaaaabbbblllleeeedddd Enable or disable the melting operation in
  607.           the _B_o_u_n_c_e _C_o_n_t_r_o_l _F_i_l_t_e_r.
  608.  
  609.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmeeeelllltttt____tttthhhhrrrreeeesssshhhhoooolllldddd When a migration counter goes below this
  610.           threshold a page is unfrozen.  This tunable is expressed as a
  611.           percent of the maximum count supported by the migration counters (7
  612.           for Origin 2000).
  613.  
  614.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____bbbboooouuuunnnncccceeee____ccccoooonnnnttttrrrroooollll____iiiinnnntttteeeerrrrvvvvaaaallll This tunable defines the period
  615.           for the loop that ages the migration counters and the dampening
  616.           counters. It is expressed in terms of _n_u_m_b_e_r _o_f _m_e_m__t_i_c_k_s. The
  617.           mem_tick unit is defined by mmmmeeeemmmm____ttttiiiicccckkkk____bbbbaaaasssseeee____ppppeeeerrrriiiioooodddd _b_e_l_o_w.  _I_f _i_t _i_s
  618.           _s_e_t _t_o _0, _w_e _p_r_o_c_e_s_s _4 _p_a_g_e_s _p_e_r _m_e_m__t_i_c_k. _I_n _t_h_i_s _c_a_s_e, _t_h_e _a_c_t_u_a_l
  619.           _p_e_r_i_o_d _d_e_p_e_n_d_s _o_n _t_h_e _a_m_o_u_n_t _o_f _p_h_y_s_i_c_a_l _m_e_m_o_r_y _p_r_e_s_e_n_t _i_n _a _n_o_d_e.
  620.  
  621.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ddddaaaammmmppppeeeennnniiiinnnngggg____eeeennnnaaaabbbblllleeeedddd Enable or disable migration dampening.
  622.  
  623.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ddddaaaammmmppppeeeennnniiiinnnngggg____ffffaaaaccccttttoooorrrr The number of migration requests needed
  624.           for a page before migration is actually executed. It is expressed as
  625.           a percentage of the maximum count supported by the migration-request
  626.           counters (3 for Origin 2000).
  627.  
  628.      *    mmmmeeeemmmm____ttttiiiicccckkkk____eeeennnnaaaabbbblllleeeedddd Enable or disabled the loop that executes the
  629.           _M_i_g_r_a_t_i_o_n _C_o_n_t_r_o_l _P_e_r_i_o_d_i_c _O_p_e_r_a_t_i_o_n.
  630.  
  631.      *    mmmmeeeemmmm____ttttiiiicccckkkk____bbbbaaaasssseeee____ppppeeeerrrriiiioooodddd Number of 10[ms] system ticks in one mem_tick.
  632.  
  633.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____uuuunnnnppppeeeeggggggggiiiinnnngggg____ccccoooonnnnttttrrrroooollll____eeeennnnaaaabbbblllleeeedddd Enable or disable the unpegging
  634.           periodic operation
  635.  
  636.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____uuuunnnnppppeeeeggggggggiiiinnnngggg____ccccoooonnnnttttrrrroooollll____iiiinnnntttteeeerrrrvvvvaaaallll This tunable defines the period
  637.           for the loop that unpegs the hardware memory reference counters. It
  638.           is expressed in terms of _n_u_m_b_e_r _o_f _m_e_m__t_i_c_k_s.  The mem_tick unit is
  639.           defined by mmmmeeeemmmm____ttttiiiicccckkkk____bbbbaaaasssseeee____ppppeeeerrrriiiioooodddd _a_b_o_v_e. _I_f _i_t _i_s _s_e_t _t_o _0, _w_e _p_r_o_c_e_s_s
  640.           _8 _p_a_g_e_s _p_e_r _m_e_m__t_i_c_k. _I_n _t_h_i_s _c_a_s_e, _t_h_e _a_c_t_u_a_l _p_e_r_i_o_d _d_e_p_e_n_d_s _o_n _t_h_e
  641.           _a_m_o_u_n_t _o_f _p_h_y_s_i_c_a_l _m_e_m_o_r_y _p_r_e_s_e_n_t _i_n _a _n_o_d_e.
  642.  
  643.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____uuuunnnnppppeeeeggggggggiiiinnnngggg____ccccoooonnnnttttrrrroooollll____tttthhhhrrrreeeesssshhhhoooolllldddd Hardware memory reference
  644.           counter value at which we consider the counter to be pegged. It is
  645.           expressed as a percent of the maximum count defined by
  646.           numa_migr_threshold_reference.
  647.  
  648.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ttttrrrraaaaffffffffiiiicccc____ccccoooonnnnttttrrrroooollll____eeeennnnaaaabbbblllleeeedddd Enable or disable the _T_r_a_f_f_i_c
  649.           _C_o_n_t_r_o_l _F_i_l_t_e_r. This is an experimental module, and therefore it
  650.           should always be disabled.
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.                                                                        PPPPaaaaggggeeee 11110000
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  665.  
  666.  
  667.  
  668.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ttttrrrraaaaffffffffiiiicccc____ccccoooonnnnttttrrrroooollll____iiiinnnntttteeeerrrrvvvvaaaallll Traffic control period.
  669.           Experimental module.
  670.  
  671.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ttttrrrraaaaffffffffiiiicccc____ccccoooonnnnttttrrrroooollll____tttthhhhrrrreeeesssshhhhoooolllldddd Traffic control threshold for
  672.           kicking the batch migration of enqueued migration requests.
  673.           Experimental module.
  674.  
  675.  
  676. FFFFIIIILLLLEEEESSSS
  677.      /var/sysgen/mtune/numa
  678.  
  679. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  680.      numa(5), replication(5), mtune(4), refcnt(5), mmci(5), nstats(1), sn(1).
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.                                                                        PPPPaaaaggggeeee 11111111
  724.  
  725.  
  726.  
  727.